// src/store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
import request from '@/utils/request'; // 封装的 axios 实例

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    user: null // 最开始没拉取到，则为 null；拉取出错（401）后，为 {} 或 'unauthenticated'
  },
  mutations: {
    SET_USER(state, userObj) {
      state.user = userObj;
    },
    CLEAR_USER(state) {
      state.user = null;
    }
  },
  actions: {
    // 拉取“当前登录用户信息”
  async fetchCurrentUser({ commit }) {
    try {
    const response = await request.get('/adminAccounts/currentUser');
    console.log('当前用户信息：', response);
    commit('SET_USER', response);
    return response;
    } catch (err) {
      commit('CLEAR_USER');
    
      // 静默处理 401 错误（不打印红色错误）
      if (err.response && err.response.status === 401) {
        console.warn('未登录，已静默处理');
        return null;
      }
    
      // 其他错误抛出（开发阶段建议保留）
      throw err;
    }
  },

    // 登出时清理
    logout({ commit }) {
      commit('CLEAR_USER');
      // 也可以调用后端登出接口，例如 request.post('/logout')
    }
  },
  getters: {
    isLoggedIn: function (state) {
      return state.user && state.user.role;
    },
    userRole: function (state) {
      return state.user ? state.user.role : null;
    },
    isSuperAdmin: function (state) {
      return state.user && state.user.role === 'ROLE_SUPER_ADMIN';
    }
  }
});
